Skip to contentSkip to conversation

Confused as to the correct syntax

PATCH In review Alan Chandler 3 participants 6 messages Jun 15, 2016 Documentation

lore
Share & tools
lore
#0 lore raw

The man page for git-rev-parse talks about the way to specify commits back from a named commit object. The following text in this man page tries to explain it, but it has confused me more

"A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^ which is equivalent to rev11^1."

Why is rev~3 equivalent to rev^, surely it is equivalent to rev^^^

Why is rev~3 equivalent to rev11^1, should that not be rev^1^1^1

I don't understand the syntax here - so was looking it up in the man page. Is there an error in the page or have I misunderstood something.

Signature · 3 lines
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.
#1 lore raw
Quoted 8 lines · Alan Chandler

"A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^ which is equivalent to rev11^1."

Why is rev~3 equivalent to rev^, surely it is equivalent to rev^^^

Why is rev~3 equivalent to rev11^1, should that not be rev^1^1^1

Sorry, for not knowing how to do that properly in Asciidoc ;-).

The source to the man page and HTML page reads like this:

* A suffix '~<n>' to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^^^ which is equivalent to rev^1^1^1.

#2 lore raw

PATCH 1/1 Fix usage of carets in git-rev-parse(1)

... but using a {caret} attribute.

---

Junio C Hamano <[email protected]> wrote Wed, Oct 05, 2005:

Quoted 7 lines
Quoted 5 lines · Alan Chandler

"A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^ which is equivalent to rev11^1."

Quoted 5 lines
Quoted 3 lines

Why is rev~3 equivalent to rev^, surely it is equivalent to rev^^^

Why is rev~3 equivalent to rev11^1, should that not be rev^1^1^1

Sorry, for not knowing how to do that properly in Asciidoc ;-).

I think something like the following will do ...

Documentation/asciidoc.conf +5 -0
@@ -7,6 +7,9 @@
 # Show GIT link as: <command>(<section>); if section is defined, else just show
 # the command.
 
+[attributes]
+caret=^
+
 ifdef::backend-docbook[]
 [gitlink-inlinemacro]
 {0%{target}}
@@ -19,3 +22,5 @@ ifdef::backend-xhtml11[]
 [gitlink-inlinemacro]
 <a href="{target}.html">{target}{0?({0})}</a>
 endif::backend-xhtml11[]
+
+
Documentation/git-rev-parse.txt +12 -11
@@ -54,13 +54,13 @@ OPTIONS
 	`git-diff-\*`).
 
 --not::
-	When showing object names, prefix them with '^' and
-	strip '^' prefix from the object names that already have
+	When showing object names, prefix them with '{caret}' and
+	strip '{caret}' prefix from the object names that already have
 	one.
 
 --symbolic::
 	Usually the object names are output in SHA1 form (with
-	possible '^' prefix); this option makes them output in a
+	possible '{caret}' prefix); this option makes them output in a
 	form as close to the original input as possible.
 
 
@@ -93,22 +93,23 @@ what is called an 'extended SHA1' syntax
   happen to have both heads/master and tags/master, you can
   explicitly say 'heads/master' to tell GIT which one you mean.
 
-* A suffix '^' to a revision parameter means the first parent of
-  that commit object.  '^<n>' means the <n>th parent (i.e.
-  'rev^'
-  is equivalent to 'rev^1').  As a special rule,
-  'rev^0' means the commit itself and is used when 'rev' is the
+* A suffix '{caret}' to a revision parameter means the first parent of
+  that commit object.  '{caret}<n>' means the <n>th parent (i.e.
+  'rev{caret}'
+  is equivalent to 'rev{caret}1').  As a special rule,
+  'rev{caret}0' means the commit itself and is used when 'rev' is the
   object name of a tag object that refers to a commit object.
 
 * A suffix '~<n>' to a revision parameter means the commit
   object that is the <n>th generation grand-parent of the named
   commit object, following only the first parent.  I.e. rev~3 is
-  equivalent to rev^^^ which is equivalent to rev^1^1^1.
+  equivalent to rev{caret}{caret}{caret} which is equivalent to\
+  rev{caret}1{caret}1{caret}1.
 
-'git-rev-parse' also accepts a prefix '^' to revision parameter,
+'git-rev-parse' also accepts a prefix '{caret}' to revision parameter,
 which is passed to 'git-rev-list'.  Two revision parameters
 concatenated with '..' is a short-hand for writing a range
-between them.  I.e. 'r1..r2' is equivalent to saying '^r1 r2'
+between them.  I.e. 'r1..r2' is equivalent to saying '{caret}r1 r2'
 
 
 Author
Signature · 1 line
Jonas Fonseca
#3 lore raw

Re: [PATCH] Fix usage of carets in git-rev-parse(1)

Quoted 3 lines · Jonas Fonseca

... but using a {caret} attribute.

Thanks. This seems to fix it. Applied and pushed out (but not in time for just released 0.99.8b).

#4 lore raw
In reply to Junio C Hamano
Quoted 10 lines · Junio C Hamano
Quoted 8 lines · Alan Chandler

"A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^ which is equivalent to rev11^1."

Why is rev~3 equivalent to rev^, surely it is equivalent to rev^^^

Why is rev~3 equivalent to rev11^1, should that not be rev^1^1^1

Quoted 8 lines

Sorry, for not knowing how to do that properly in Asciidoc ;-).

The source to the man page and HTML page reads like this:

* A suffix '~<n>' to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^^^ which is equivalent to rev^1^1^1.

No the HTML page is screwed up too.

Signature · 3 lines
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.
#5 lore raw
Quoted 10 lines · Alan Chandler
Quoted 8 lines

Sorry, for not knowing how to do that properly in Asciidoc ;-).

The source to the man page and HTML page reads like this:

* A suffix '~<n>' to a revision parameter means the commit object that is the <n>th generation grand-parent of the named commit object, following only the first parent. I.e. rev~3 is equivalent to rev^^^ which is equivalent to rev^1^1^1.

No the HTML page is screwed up too.

I know. The source reads like above, is what I said. Help from Asciidoc savvy people is very welcomed.